//
//  TalkfunSDK.h
//  TalkfunSDK
//
//  Created by LuoLiuyou on 2017/7/20.
//  Copyright © 2017年 Talkfun. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "TalkfunSDKRtcConfig.h"
#import "TFConfig.h"
NS_ASSUME_NONNULL_BEGIN
extern NSString * const TalkfunSDKVersion;

/**
 *  用户事件（public）
 */
extern NSString * const TALKFUN_EVENT_PLAY;                 //ijk视频播放
extern NSString * const TALKFUN_EVENT_PAUSE;                //暂停
extern NSString * const TALKFUN_EVENT_STOP;                 //停止
extern NSString * const TALKFUN_EVENT_CAMERA_SHOW;          //摄像头开
extern NSString * const TALKFUN_EVENT_CAMERA_HIDE;          //摄像头关
extern NSString * const TALKFUN_EVENT_DESKTOP_START;        //桌面分享开始
extern NSString * const TALKFUN_EVENT_DESKTOP_STOP;         //桌面分享结束
extern NSString * const TALKFUN_EVENT_DESKTOP_PAUSE;        //桌面分享暂停
extern NSString * const TALKFUN_EVENT_MODE_CHANGE;          //直播间模式切换
extern NSString * const TALKFUN_EVENT_NETWORK_SPEED;        //网络速度
/**
 *  用户事件（live）
 */
extern NSString * const TALKFUN_EVENT_VOTE_NEW;             //投票开始
extern NSString * const TALKFUN_EVENT_VOTE_PUB;             //投票结束
extern NSString * const TALKFUN_EVENT_VOTE_DEL;             //投票删除
extern NSString * const TALKFUN_EVENT_VOTE_INFO;            //查看投票信息
extern NSString * const TALKFUN_EVENT_VOTE_SUBMIT;          //提交投票
extern NSString * const TALKFUN_EVENT_LOTTERY_START;        //抽奖开始
extern NSString * const TALKFUN_EVENT_LOTTERY_STOP;         //抽奖结束

extern NSString * const TALKFUN_SIGN_NEW;        //签到开始
extern NSString * const TALKFUN_SIGN_END;         //签到结束
extern NSString * const TALKFUN_SIGN_IN;     //提交签到


extern NSString * const TALKFUN_EVENT_BROADCAST;            //公共广播
extern NSString * const TALKFUN_EVENT_CHAT_DISABLE;         //禁言
extern NSString * const TALKFUN_EVENT_CHAT_ENABLE;          //解除禁言
extern NSString * const TALKFUN_EVENT_CHAT_DISABLE_ALL;     //全体禁言
extern NSString * const TALKFUN_EVENT_CHAT_SEND;            //信息发送接收
extern NSString * const TALKFUN_EVENT_CHAT_PRIVATE;         //私聊
extern NSString * const TALKFUN_EVENT_FLOWER_SEND;          //送花
extern NSString * const TALKFUN_EVENT_FLOWER_INIT;      //送花初始化
extern NSString * const TALKFUN_EVENT_FLOWER_TOTAL;         //花朵总数
extern NSString * const TALKFUN_EVENT_FLOWER_TIME_LEFT;     //送花剩余时间
extern NSString * const TALKFUN_EVENT_QUESTION_LIST;        //问题列表
extern NSString * const TALKFUN_EVENT_QUESTION_ASK;         //提问
extern NSString * const TALKFUN_EVENT_QUESTION_AUDIT;//通过
extern NSString * const TALKFUN_EVENT_QUESTION_REPLY;       //问题回复
extern NSString * const TALKFUN_EVENT_QUESTION_DELETE;      //问题删除
extern NSString * const TALKFUN_EVENT_MEMBER_JOIN_ME;       //我进入房间
extern NSString * const TALKFUN_EVENT_MEMBER_JOIN_OTHER;    //其他人进入房间
extern NSString * const TALKFUN_EVENT_MEMBER_LEAVE;         //其他人离开房间
extern NSString * const TALKFUN_EVENT_MEMBER_TOTAL;         //房间总人数
extern NSString * const TALKFUN_EVENT_MEMBER_KICK;          //踢人
extern NSString * const TALKFUN_EVENT_MEMBER_FORCEOUT;      //被强迫退出房间
extern NSString * const TALKFUN_EVENT_MEMBER_LIST;          //用户列表
extern NSString * const TALKFUN_EVENT_ANNOUNCE_NOTICE;      //公告
extern NSString * const TALKFUN_EVENT_ANNOUNCE_ROLL;        //滚动公告
extern NSString * const TALKFUN_EVENT_LIVE_WAIT;            //直播未开始
extern NSString * const TALKFUN_EVENT_LIVE_START;           //直播开始
extern NSString * const TALKFUN_EVENT_LIVE_STOP;            //直播结束
extern NSString * const TALKFUN_EVENT_ROOM_INIT;            //房间初始化

extern NSString * const TALKFUN_EVENT_RTC_INVITE;            //被邀请上讲台
extern NSString * const TALKFUN_EVENT_RTC_INVITECANCEL;      //取消邀请上讲台

extern NSString * const TALKFUN_EVENT_CURRENT_VIDEO_DEFINITION_LIST;        //默认视频清晰度
/**
 *  用户事件（playback）
 */
extern NSString * const TALKFUN_EVENT_VOD_START;            //点播开始
extern NSString * const TALKFUN_EVENT_VOD_STOP;             //点播结束
extern NSString * const TALKFUN_EVENT_VOD_DURATION;         //点播总时长
extern NSString * const TALKFUN_EVENT_VOD_INFO;             //点播信息
extern NSString * const TALKFUN_EVENT_VOD_QUESTION_APPEND;  //追加问题列表
extern NSString * const TALKFUN_EVENT_VOD_QUESTION_REFRESH; //刷新问题列表
extern NSString * const TALKFUN_EVENT_VOD_QUESTION_SCROOL;  //获得问答滚动的索引，必须使用TALKFUN_EVENT_VOD_QUESTION_REFRESH获得的数据列表
extern NSString * const TALKFUN_EVENT_VOD_MESSAGE_APPEND;   //聊天信息列表
extern NSString * const TALKFUN_EVENT_VOD_MESSAGE_REFRESH;  //刷新聊天列表
extern NSString * const TALKFUN_EVENT_VOD_MESSAGE_SCROOL;   //获得聊天滚动的索引，必须使用TALKFUN_EVENT_VOD_MESSAGE_REFRESH获得的数据列表
extern NSString * const TALKFUN_EVENT_VOD_CHAPTER_LIST;     //章节列表




extern NSString * const TALKFUN_EVENT_WHITEOARD_PAGE_FRAME;     //画板当前页的白板与ppt的frame

extern NSString * const TALKFUN_EVENT_SCORE_CONFIG;   //评分配置
extern NSString * const TALKFUN_EVENT_PPT_DISPLAY;   //ppt是否显示

/**
 *  用户事件（download）
 */
extern NSString * const TALKFUN_EVENT_DOWNLOAD_STATUS;      //下载状态
extern NSString * const TALKFUN_EVENT_DOWNLOAD_PROGRESS;    //下载进度

//extern NSString * const  TALKFUN_EVENT_INSUFFICIENT_DISK_SPACE_WARNING; //警告磁盘空间不足

/**
 *  广播名
 */
extern NSString * const TalkfunErrorNotification;       //错误信息广播（类型看错误信息类型）


/**
 用户角色
 **/
extern NSString * const TalkfunMemberRoleSpadmin;       //超级管理员(老师)
extern NSString * const TalkfunMemberRoleAdmin;         //管理员(助教)
extern NSString * const TalkfunMemberRoleUser;          //普通用户(学生)
extern NSString * const TalkfunMemberRoleGuest;         //游客

extern int const TalkfunMemberGenderUnknow;             //未知性别
extern int const TalkfunMemberGenderMale;               //男性
extern int const TalkfunMemberGenderFemale;             //女性

extern NSString * const TalkfunPlaybackID;              //点播离线播放的key



@interface TalkfunSDK : NSObject

#ifndef TalkfunError

//错误信息类型
typedef enum {
    //详细错误代码
    TalkfunErrrorCourseIsFinish = 1262,           //课程已结束
    TalkfunErrorAuthenticationFail = 10010,      //鉴权失败,access_token错误或者过期
    
    
    //错误大类
    TalkfunErrorLoadingData = 200000,            //加载数据出错
    TalkfunErrorNetworkDisconnect = 200001,       //网络连接错误
    TalkfunErrorVideoError = 200002,              //视频加载错误
    TalkfunErrorDownloadError = 200003,           //下载错误
    TalkfunErrorLoadingOfflineFileError = 200004,  //加载离线文件错误
    TalkfunErrorConnectionFailedError = 200005,  //socket连接失败
    TalkfunErrorNoMoreSpace = 10035 , //房间已满
    TalkfunErrorKick = 10034  //你已被管理员移出房间
    
    
}TalkfunError;

#endif


//视频加载状态
typedef NS_OPTIONS(NSUInteger, TalkfunPlayerLoadState) {
    TalkfunPlayerLoadStateUnknown        = 0,
    TalkfunPlayerLoadStatePlayable       = 1 << 0,
    TalkfunPlayerLoadStatePlaythroughOK  = 1 << 1, // Playback will be automatically started in this state when shouldAutoplay is YES
    TalkfunPlayerLoadStateStalled        = 1 << 2, // Playback will be automatically paused in this state, if started
};

//视频播放结束原因
typedef NS_ENUM(NSInteger, TalkfunPlayerMovieFinishReason) {
    TalkfunPlayerMovieFinishReasonPlaybackEnded,
    TalkfunPlayerMovieFinishReasonPlaybackError,
    TalkfunPlayerMovieFinishReasonUserExited
};

//状态码
typedef enum{
    
    TalkfunCodeSuccess = 0,
    TalkfunCodeFailed  = -1,
    TalkfunCodeTimeout = -100,
    TalkfunCodeGetDataFail = -101,
    TalkfunCodeWrongPassword = -3,
    TalkfunCodeUnknownError = 1000
    
}TalkfunCode;
///**1单选题、2多选题、3判断题、4填空题、5简答题*/
typedef enum{
    
    TalkfunTopicTypeIndividualEvent = 1,//单选题
    TalkfunTopicTypeMultiple  = 2,//多选题
    TalkfunTopicTypeJudgment = 3,//判断题
    TalkfunTopicTypeStuff = 4,//填空题
    TalkfunTopicTypeShortAnswer =  5 //简答题

    
}TalkfunTopicType;

//播放状态
typedef enum {
    
    TalkfunPlayStatusStop    = 0,
    TalkfunPlayStatusPlaying = 1,
    TalkfunPlayStatusPause   = 2,
    TalkfunPlayStatusSeeking = 3,
    TalkfunPlayStatusError   = 4
    
}TalkfunPlayStatus;

//0：应用，1：播放，2：暂停，3：拖动，4：关闭
//多媒体播放状态(音视频)
typedef enum {
    
    TalkfunMultiMediaStatusChangeListenerPlaying      = 1,//播放
    TalkfunMultiMediaStatusChangeListenerStop         = 2,//停止
    TalkfunMultiMediaStatusChangeListenerSeek         = 3,//快进
    TalkfunMultiMediaStatusChangeListenerClose        = 4,//关闭
    TalkfunMultiMediaStatusChangeListenerComplate     = 5,//完成
    TalkfunMultiMediaStatusChangeListenerError        = 6,//错误
  
}TalkfunMultiMediaStatusChangeListener;

//视频模式
typedef enum {
    
    TalkfunLiveModeVideo   = 0,
    TalkfunLiveModeDesktop = 2,
    TalkfunLiveModeRTC= 3
}TalkfunLiveMode;

//上课模式
typedef enum {
    
    TalkfunPageModeCourse   = 0, //课件
    TalkfunPageModeKeyNote = 1, //主讲
    TalkfunPageModeGallery= 2  //画廊模式
}TalkfunPageMode;

//网络状态
typedef enum {
    
    TalkfunNetworkStatusGood    = 0,  //网络好
    TalkfunNetworkStatusGeneral = 1, //网络一般
    TalkfunNetworkStatusBad     = 2, //网络较差
    TalkfunNetworkStatusNotReachable = 3 //没有网络 已断网
}TalkfunNetworkStatus;

//日志输出控制
typedef enum {
    TalkfunLoggerLevelAll = 0,
    TalkfunLoggerLevelLog = 1,
    TalkfunLoggerLevelInfo = 2,
    TalkfunLoggerLevelDebug = 3,
    TalkfunLoggerLevelWarn = 4,
    TalkfunLoggerLevelError = 5,
    TalkfunLoggerLevelFatal = 6,
    TalkfunLoggerLevelNone = 10
}TalkfunLoggerLevel;


typedef enum {
    TalkfunLiveStatusWait  = 0, //直播未开始
    TalkfunLiveStatusStart = 1, //直播开始
    TalkfunLiveStatusStop  = 2, //直播结束
    
}TalkfunLiveStatus;
typedef enum {
    /**分页式*/
    TalkfunQuestionnairePageStatusPagination = 1,
    /**一页式*/
    TalkfunQuestionnairePageStatusOnePage  = 2,
    
}TalkfunQuestionnairePageStatus;

typedef enum {
    /**随堂考*/
    TFExaminationTypeTestPaper = 2,
    /**表单*/
    TFExaminationTypeTable  = 3,
    /**快速答题卡*/
    TFExaminationTypeQuickAnswer  = 4,
    
}TFExaminationType;

typedef enum {
    /**- 1 未参加*/
    TalkfunAnswerStatusUnsubmitted    = -1,
    /**已参加 ,但未提交*/
    TalkfunAnswerStatusParticipated    = 0,
    /**已提交*/
    TalkfunAnswerStatusSubmitted = 1,
    /**已批阅*/
    TalkfunAnswerStatusApproved     = 2

}TalkfunAnswerStatus;

typedef enum {
    /**- 1 未参加*/
    TalkfunQuestionnaireStatusUnsubmitted    = -1,
    /**未发布*/
    TalkfunQuestionnaireStatusUnpublished    = 0,
    /**已发布*/
    TalkfunQuestionnaireStatusPublished = 1,
    /**已删除*/
    TalkfunQuestionnaireStatusDeleted     = 2

}TalkfunQuestionnaireStatus;

typedef enum {
    /**未上架*/
    TalkfunSubjectQuestionnaireInfoStatusNotOnHeList    = 0,
    /**已上架*/
    TalkfunSubjectQuestionnaireInfoStatusOnTheShelf    = 1,
    /**已下架*/
    TalkfunSubjectQuestionnaireInfoStatusTakeDown = 2,
    /**已删除*/
    TalkfunSubjectQuestionnaireInfoStatusDeleted     = 3

}TalkfunSubjectQuestionnaireInfoStatus;

typedef enum {
    /**未知*/
    TalkfunCourseTypeUnknown = -1,
    /**大班模式    (非互动直播)*/
    TalkfunCourseTypeLive = 0,
    /**大班互动模式  (互动直播)*/
    TalkfunCourseTypeInteractiveLive  = 1,
    /**小班模式*/
    TalkfunCourseTypeStatusRTC  = 2,
    /**大班低延时模式*/
    TalkfunCourseTypLowLatency  = 3,
}TalkfunCourseType;
typedef NS_ENUM(NSInteger, TalkfunMovieScalingMode) {
    TalkfunMovieScalingModeAspectFit = 0, ///< 图像适应屏幕，保持画面完整，但如果图像宽高比不同于屏幕宽高比，会有黑边的存在。
    
    TalkfunMovieScalingModeFill = 1,// 图像铺满屏幕，不留黑边，如果图像宽高比不同于屏幕宽高比，部分画面内容会被裁剪掉
      
};

typedef enum {
    TFCourseDownloadStatusUnstart    = 0, //未开始
    TFCourseDownloadStatusPrepare    = 1, //等待中
    TFCourseDownloadStatusStart      = 2, //正在下载
    TFCourseDownloadStatusPause      = 3, //暂停
    TFCourseDownloadStatusFinish     = 4, //下载完成
    TFCourseDownloadStatusError      = 5 , //下载错误
 
}TFCourseDownloadStatus;

@end


///【字段含义】课件下载入口
@interface TFPageConfigGlobalSwitchDoucment : NSObject
///【字段含义】 名字   _Nonnull  
@property (nonatomic, copy, nonnull)NSString * name;
///【字段含义】是否启用   //开启为true
@property (nonatomic, assign)BOOL enable;
@end


/**
*    推送弹窗广告
*/
@interface TFPopupPut : NSObject
///【字段含义】广告播放时长
@property (nonatomic, assign)NSInteger duration;

@property (nonatomic, copy, nonnull) NSString* img;
///【字段含义】广告生成的的时间  2021-03-09 15:30:38
@property (nonatomic, copy, nonnull) NSString* pushTime;
///【字段含义】广告图片点击时会跳转的链接
@property (nonatomic, copy, nonnull) NSString* url;
///【字段含义】发起推广的用户标记
@property (nonatomic, copy, nonnull) NSString* uuid;
///【字段含义】保存按钮 0关闭 1开启
@property (nonatomic, assign) BOOL saveButton;
///【字段含义】广告图片的链接
@property (nonatomic, copy, nonnull) NSString* img1;

///【字段含义】广告图片的名称
@property (nonatomic, copy, nonnull) NSString* title;
///【字段含义】推送类型    1:手动推送 2:进入直播间推送,3:结束直播推送
@property (nonatomic, assign) NSInteger type;

///【字段含义】宣传图类型   0:默认宣传 1:自定义宣传
@property (nonatomic, assign) NSInteger pupUpType;

@end


@interface TFPageConfigGlobalSwitchPopUpData : NSObject

///【字段含义】 名字   
@property (nonatomic, copy, nonnull)NSString * name;
///【字段含义】 题目
@property (nonatomic, copy, nonnull)NSString * title;
///【字段含义】 图片链接
@property (nonatomic, copy, nonnull)NSString * image;
@end

@interface TFPageConfigGlobalSwitchPopUp : NSObject
///【字段含义】 名字   _Nonnull
@property (nonatomic, copy, nonnull)NSString * name;
///【字段含义】是否启用   //开启为1
@property (nonatomic, assign)BOOL enable;
///【字段含义】入口配置的相关数据
@property (nonatomic, strong)TFPageConfigGlobalSwitchPopUpData *_Nonnull data;
@end

@interface TFLifePageConfigGlobalSwitch : NSObject
///【字段含义】宣传图入口配置
@property (nonatomic, strong)TFPageConfigGlobalSwitchPopUp *_Nonnull popUp;
///【字段含义】课件下载入口
@property (nonatomic, strong)TFPageConfigGlobalSwitchDoucment *_Nonnull document;
@end

@interface TFPageConfigGlobal : NSObject

///【字段含义】宣传图入口配置
@property (nonatomic, strong)TFLifePageConfigGlobalSwitch *_Nonnull glswitch;
@property (nonatomic, strong)TFPageConfigSwitch *_Nonnull switchModel;
@end

//-----------------------------------------

@interface TFQuestionnaireIcon : NSObject
//入口按钮标题
@property (nonatomic, strong)NSString* title;
//入口按钮l图标
@property (nonatomic, strong)NSString* img;
@end

@interface TFQuestionnaireTitle : NSObject
//弹窗标题
@property (nonatomic, strong)NSString* theme;
//介绍内容
@property (nonatomic, strong)NSString* content;
@end
@interface TFQuestionnaireItems : NSObject
//必选 * 默认 checked==0
@property (nonatomic, assign)NSInteger checked;
//标题
@property (nonatomic, strong)NSString* title;
//类型 默认 type==0  类型 0：文本、1：姓名、2：手机号、3：数字、4：留言
@property (nonatomic, assign)NSInteger type;
// 描述
@property (nonatomic, strong)NSString* descriptionMsg;
//是否需要短信验证，类型为2时才使用该属性
@property (nonatomic, assign)NSInteger verification;
//已填写内容，未填写过值为空
@property (nonatomic, strong)NSString* value;

@end

//信息采集(问卷)
@interface TFQuestionnaire : NSObject
//true]开启 false未开启
@property (nonatomic, assign)bool enable;
@property (nonatomic, strong)TFQuestionnaireIcon* icon;
@property (nonatomic, strong)TFQuestionnaireTitle* title;
@property (nonatomic, strong) NSMutableArray<TFQuestionnaireItems*> *items;
@end


//获取已填写信息采集信息，未填写过信息采集返回空数据
@interface TFFilledQuestionnaire : NSObject
@property (nonatomic,strong) NSString * cid;
@property (nonatomic,strong) NSString * add_time;
@property (nonatomic,strong) TFQuestionnaire * info;
@end

//-----------------------------------------

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*     大班与小班的进入房间参数的模型
*/
@interface TalkfunSDKLiveInitParams : NSObject
/**【字段含义】访问令牌 [必填]
 */
@property (nonatomic, copy, nonnull)NSString* accessToken;
/** 课程模式 :(不设置的情况下默认为大班)
 */
@property (nonatomic, assign)TalkfunCourseType courseType;
//初始化成功自动播放视频 默认:YES  大班情况下, 可改为NO
@property (nonatomic,assign) BOOL autoplay;
//视频背影颜色 默认:黑色
@property (nonatomic,strong) UIColor * videoBgColor;
@end

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*     进入房间参数的模型
*/
@interface TalkfunSDKPlaybackInitParams : NSObject
/**【字段含义】访问令牌 [必填]
 */
@property (nonatomic, copy, nonnull)NSString* accessToken;
/**课程id
 */
@property (nonatomic, copy, nonnull)NSString*playbackID;
//初始化成功自动播放视频 默认:YES
@property (nonatomic,assign) BOOL autoplay;
//视频背影颜色 默认:黑色
@property (nonatomic,strong) UIColor * videoBgColor;
@end

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*     生活直播的进入房间参数的模型
*/
@interface TalkfunSDKLifeLiveInitParams : NSObject
///【字段含义】访问令牌 [必填]，
@property (nonatomic, copy, nonnull) NSString* accessToken;
//初始化成功自动播放视频 默认:YES  大班情况下, 可改为NO
@property (nonatomic,assign) BOOL autoplay;
//视频背影颜色 默认:黑色
@property (nonatomic,strong) UIColor * videoBgColor;

@end
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@interface TFLotteryStartUser : NSObject
/**发起抽奖人所在的组*/
@property (nonatomic, copy, nonnull)NSString* gid;
/**名字*/
@property (nonatomic, copy, nonnull)NSString* nickname;
/**角色
*/
@property(nonatomic,assign)TalkfunRtcRole role;
@end

/*抽奖开始的回调*/
@interface TFLotteryStart : NSObject
/**抽奖编号*/
@property (nonatomic, copy, nonnull)NSString *t;
/**发起抽奖人资料*/
@property (nonatomic, strong, nonnull)TFLotteryStartUser* user;
@end

@interface TFLotteryWinner : NSObject
/**中奖人的编号*/
@property (nonatomic, copy, nonnull)NSString* xid;
/**中奖人名字*/
@property (nonatomic, copy, nonnull)NSString* nickname;
/**发起抽奖人的名字*/
@property (nonatomic, copy, nonnull)NSString* launch_nickname;
/** 是不是自己*/
@property (nonatomic, assign)BOOL isMe;
@end

/*抽奖结束的回调*/
@interface TFLotteryStop : NSObject
@property (nonatomic, copy, nonnull)NSString* gid;
/**是否显示抽奖结果*/
@property (nonatomic, assign)BOOL pub;
@property (nonatomic, copy, nonnull)NSString* lotery_id;
//中奖人列表
@property (nonatomic, strong,nonnull)NSMutableArray <TFLotteryWinner *>* winnerList;
/**奖品名称*/
@property (nonatomic, copy, nonnull)NSString*prize_name;
@end
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/**主播回复的内容*/
@interface TFQuestionAnswer : NSObject
@property (nonatomic, copy, nonnull) NSString* status;
@property (nonatomic, copy, nonnull) NSString* sn;
@property (nonatomic, copy, nonnull) NSString* qid;
//**回复的编号*/
@property (nonatomic, copy, nonnull) NSString* replyId;
@property (nonatomic, copy, nonnull) NSString* uid;
@property (nonatomic, copy, nonnull) NSString* liveid;
/**直播间是时间戳 例:1618036620
   点播间是秒数:60
 */
@property (nonatomic, copy, nonnull)NSString* time;
@property (nonatomic, copy, nonnull)NSString* gid;
/**头像链接*/
@property (nonatomic, copy, nonnull)NSString* avatar;
@property (nonatomic, copy, nonnull)NSString* replies;
/**角色*/
@property (nonatomic, assign)TalkfunRtcRole role;
/**名字*/
@property (nonatomic, copy, nonnull)NSString* nickname;
@property (nonatomic, copy, nonnull) NSString* course_id;
@property (nonatomic, copy, nonnull) NSString* xid;
/**内容*/
@property (nonatomic, copy, nonnull) NSString* content;
@end

/*提问的回调*/
@interface TFQuestionData : NSObject
@property (nonatomic, copy, nonnull) NSString* course_id;
@property (nonatomic, copy, nonnull) NSString* xid;
/*提问的编号*/
@property (nonatomic, copy, nonnull) NSString* qid;
@property (nonatomic, copy, nonnull) NSString* uid;
/**回复的编号*/
@property (nonatomic, copy, nonnull) NSString* replyId;
@property (nonatomic, copy, nonnull) NSString* liveid;
/**主播回复的内容*/
@property (nonatomic, strong,nonnull)NSMutableArray <TFQuestionAnswer *>* answer;
/**内容*/
@property (nonatomic, copy, nonnull) NSString* content;
/**直播间是时间戳 例:1618036620
   点播间是秒数:60
 */
@property (nonatomic, copy, nonnull)NSString* time;
@property (nonatomic, copy, nonnull)NSString* gid;
/**头像链接*/
@property (nonatomic, copy, nonnull)NSString* avatar;
@property (nonatomic, copy, nonnull)NSString* replies;
/**角色*/
@property (nonatomic, assign)TalkfunRtcRole role;
/**名字*/
@property (nonatomic, copy, nonnull)NSString* nickname;
@property (nonatomic, copy, nonnull) NSString* sn;
@property (nonatomic, copy, nonnull) NSString* status;
/*chat:1 */
@property (nonatomic, copy, nonnull) NSString*chat;
/*删除提问*/
@property (nonatomic, copy, nonnull) NSString * deleteQuestionID;
/*提问是不是本人*/
@property (nonatomic, assign) BOOL isMe;
@end
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//网络
@interface TFCurrentNetwork: NSObject
//14.145.136.104
@property(nonatomic,strong)NSString * _Nonnull ip;
//电信
@property(nonatomic,strong)NSString * _Nonnull isp;
//中国广东广州
@property(nonatomic,strong)NSString * _Nonnull location;
@end

//------网络线路
@interface TFLiveLine: NSObject
//中国电信
@property(nonatomic,strong)NSString * _Nonnull name;
//telecom
@property(nonatomic,strong)NSString * _Nonnull key;
@end

/*网络线路组*/
@interface TFLiveLineData: NSObject
//线路列表
@property (nonatomic, strong,nonnull)NSMutableArray <TFLiveLine *>* lineList;
@end

/*直播线路管理者*/
@interface TFLiveLineManager: NSObject
/*直播的线路组
 */
@property (nonatomic, strong,nonnull)NSMutableArray <TFLiveLineData *>*  data;
/*当前网络状态*/
@property(nonatomic,strong,nonnull)TFCurrentNetwork *  network;
/*获取网络是否成功 code: 0 代表获取成功
 */
@property(nonatomic,assign)NSInteger code;
/*提示语*/
@property(nonatomic,strong)NSString* _Nonnull msg;
@end


@interface TFPlaybackLineData: NSObject
/*线路1 线路2*/
@property(nonatomic,strong)NSString* _Nonnull name;
/*索引*/
@property(nonatomic,assign)NSInteger index;
/*当前线路选中*/
@property(nonatomic,assign)BOOL current;
@end

/*回放或伪直播线路管理者*/
@interface TFPlaybackLineManager: NSObject
/*获取网络是否成功 code: 0 代表获取成功
 */
@property(nonatomic,assign)NSInteger code;
/*提示语*/
@property(nonatomic,strong)NSString* _Nonnull msg;
/*回放的线路组
 */
@property (nonatomic, strong,nonnull)NSMutableArray <TFPlaybackLineData *>*  data;
@end

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*    公告
*/
@interface TFAnnouncement : NSObject
///【字段含义】内容
@property (nonatomic, copy, nonnull) NSString* content;
///【字段含义】公告发起人
@property (nonatomic, copy, nonnull) NSString* nickname;
///【字段含义】内容 "2021-03-15 19:27"
@property (nonatomic, copy, nonnull) NSString* time;
@end
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*      滚动通知
*/
@interface TFAnnounceRoll : NSObject
///【字段含义】时长
@property (nonatomic, assign) NSInteger duration;
///【字段含义】 内容
@property (nonatomic, copy, nonnull) NSString* content;
///【字段含义】 当前时间  (:2020-12-24 11:28)
@property (nonatomic, copy, nonnull) NSString* time;
///【字段含义】 超链接
@property (nonatomic, copy, nonnull) NSString *link;
/**名字*/
@property (nonatomic, copy, nonnull) NSString* nickname;
@end

@interface TFChat : NSObject
@property (nonatomic, assign) BOOL enable;
@property (nonatomic, assign) NSInteger grant;
@end

@interface TFAttr : NSObject
@property (nonatomic, strong) NSString *uext;
/**用户渠道ID */
@property (nonatomic, assign) NSInteger ctagid;
@property (nonatomic, assign) NSInteger departmentID;

//audit等于1就是审核通过  默认:1
@property (nonatomic, assign) NSInteger audit;

@end

@interface TFChatReply : NSObject
/*被@的人的名字*/
@property (nonatomic, copy, nonnull) NSString*nickname;
/*被@的人的xid*/
@property (nonatomic, copy, nonnull) NSString*xid;
/** 是不是自己*/
@property (nonatomic, assign)BOOL isMe;
@end


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**  ---------------------------------------聊天内容模型*/
@interface TFChatData : NSObject
@property (nonatomic, strong,nonnull) TFAttr * attr;
@property (nonatomic, strong,nonnull) TFChat*chat;
@property (nonatomic, copy, nonnull) NSString* gender;
//第三方身份
@property (nonatomic, copy, nonnull) NSString* uid;
//内部人员
@property (nonatomic, assign)BOOL internal;
/**成员是不是机器人  默认:NO*/
@property (nonatomic, assign)BOOL robot;
@property (nonatomic, copy, nonnull) NSString* a;
@property (nonatomic, copy, nonnull) NSString* time;
//成员所在分组
@property (nonatomic, copy, nonnull) NSString* gid;
/**用户头像*/
@property (nonatomic, copy, nonnull) NSString* avatar;
/** 是不是自己*/
@property (nonatomic, assign)BOOL isMe;
/**角色*/
@property (nonatomic, assign)TalkfunRtcRole role;
@property (nonatomic, copy, nonnull) NSString* term;
/**发送数据的人的名字*/
@property (nonatomic, copy, nonnull) NSString* nickname;
@property (nonatomic, copy, nonnull) NSString* msg;
@property (nonatomic, copy, nonnull) NSString* xid;
/**聊天数据的唯一标识,可用于查询*/
@property (nonatomic, copy, nonnull) NSString* uuid;
//@property (nonatomic, strong,nonnull) NSArray* attr;
//@property (nonatomic, strong,nonnull) NSDictionary* attrDict;
/**是否@
 replyList.cout  > 0  有@
 */
@property (nonatomic, strong,nonnull)NSMutableArray <TFChatReply *>*  replyList;

/**聊天图片URL
          默认:@" "
 如果  imageURL.length > 0   ,证明是图片数据
 */
@property (nonatomic, strong,nonnull)NSString *imageURL;

//打 赏
@property (nonatomic ,assign ) NSInteger money;
@end

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*    发起签到
*/
@interface TFSignNew : NSObject
///【字段含义】签到 ID
@property (nonatomic, copy, nonnull)NSString * signId;
///【字段含义】发起签到的时间  "2021-03-17 15:08:33"
@property (nonatomic, copy, nonnull)NSString * time;
///【字段含义】评论
@property (nonatomic, copy, nonnull)NSString * remark;
///【字段含义】发起签到人的名字
@property (nonatomic, copy, nonnull)NSString * nickname;
/**角色*/
@property (nonatomic, assign)TalkfunRtcRole role;
///【字段含义】剩余时长
@property (nonatomic, assign)NSInteger duration;
///【字段含义】发起签到人的头像
@property (nonatomic, copy, nonnull)NSString * avatar;
///【字段含义】签到的总时长
@property (nonatomic, assign)NSInteger totalDuration;

@end
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*     结束签到的事件回调
*/
@interface TFSignEnd : NSObject
///【字段含义】 ID
@property (nonatomic, copy, nonnull)NSString * signId;
///【字段含义】total
@property (nonatomic, copy, nonnull)NSString * total;
///【字段含义】signTotal
@property (nonatomic, copy, nonnull)NSString * signTotal;
@end
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*     直播时长
*/
@interface TFLiveDuration : NSObject
///    年
@property (nonatomic, assign)NSInteger year;
///    月
@property (nonatomic, assign)NSInteger month;
///    时
@property (nonatomic, assign)NSInteger day;
///    年
@property (nonatomic,assign)NSInteger hour;
///    分
@property (nonatomic, assign)NSInteger minute;
///    秒
@property (nonatomic, assign)NSInteger second;
@end



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//学员已选择的内容列表
@interface TFOp : NSObject
///【字段含义】 选项的标题
@property (nonatomic, copy, nonnull)NSString * op;
///【字段含义】 选项的人数
@property (nonatomic, copy, nonnull)NSString * opNum;
///【字段含义】 选项的百分比
@property (nonatomic, copy, nonnull)NSString * percent;
///【字段含义】 选中
@property(nonatomic,assign)BOOL selected;
@end

//发起投票者的个人数据
@interface TFVoteInfo : NSObject
///【字段含义】"正确答案 A,B , C"
@property (nonatomic, copy, nonnull)NSArray * answer;
///【字段含义】 名字
@property (nonatomic, copy, nonnull)NSString * nickname;
/**角色*/
@property (nonatomic, assign)TalkfunRtcRole role;
///【字段含义】 标题
@property (nonatomic, copy, nonnull)NSString * title;
///【字段含义】 "14:10",
@property (nonatomic, copy, nonnull)NSString * noticeTime;
///【字段含义】 图片模式的投票
@property (nonatomic, copy, nonnull)NSString * imageUrl;
///【字段含义】标签
@property (nonatomic, strong,nonnull)NSString *  label;
///【字段含义】 "209890283",
@property (nonatomic, strong,nonnull)NSString *  xid;
///【字段含义】 投票的发起时间 ""2021-03-24 16:13:09"
@property (nonatomic, strong,nonnull)NSString *  startTime;
///【字段含义】投票的结束  endTime == 2021-03-24 16:13:09  , 投票未结束 endTime = 0
@property(nonatomic,strong,nonnull)NSString*  endTime ;

@end
//投票时选项的内容列表
@interface TFVoteNewUser : NSObject
///【字段含义】 ["0,1"],     选中的 索引             0对应A  1对应B
@property (nonatomic, strong, nonnull)NSMutableArray * option;
///【字段含义】uid
@property (nonatomic, copy, nonnull)NSString * uid;
///【字段含义】"19:52:46",
@property (nonatomic, copy, nonnull)NSString * time;
///【字段含义】"7379725
@property (nonatomic, copy, nonnull)NSString * userId;
///【字段含义】投票唯一编码
@property (nonatomic, copy, nonnull)NSString * vid;
///【字段含义】投票人的名字
@property (nonatomic, copy, nonnull)NSString * nickname;
///【字段含义】内容
@property (nonatomic, copy, nonnull)NSString * msg;
@property(nonatomic,assign)BOOL isMe;
@end

/**通过xid获取当前投票详情*/
@interface TFVoteData : NSObject
///【字段含义】1 ==  单选  其它==多选
@property (nonatomic, assign)NSInteger optional;
///【字段含义】学员选择的内容列表
@property (nonatomic, strong,nonnull)NSMutableArray <TFOp *>* opList;
///【字段含义】发起投票者的个人数据
@property (nonatomic,strong,nonnull)TFVoteInfo *info;
///【字段含义】 ID
@property (nonatomic, copy, nonnull)NSString * gid;
///【字段含义】当前投票的ID
@property (nonatomic, copy, nonnull)NSString * vid;
///【字段含义】signTotal
@property (nonatomic, copy, nonnull)NSString * t;
///【字段含义】(0 未投票   1 已投票)
@property(nonatomic,assign)BOOL voted;
///【字段含义】(是否公布答案)
@property(nonatomic,assign)BOOL isShow;
///【字段含义】投票时选项的内容列表
@property (nonatomic, strong,nonnull)NSMutableArray <TFVoteNewUser *>*  userList;
@end

/**提交投票答案*/
@interface TFSubmit: NSObject
///【字段含义】投票的ID
@property (nonatomic, strong,nonnull)NSString *  vid;
///【字段含义】投票时用到的答案数组  [@"0",1]     就是A, B
@property (nonatomic, strong,nonnull)NSMutableArray *  option;
@end



@interface TFKeyNote : NSObject
@property(nonatomic,assign) NSInteger status; //0是主播是主讲人,1是用户是主讲人
@property(nonatomic,strong) NSString * term;
@property(nonatomic,strong)NSString * nickname;
@property(nonatomic,strong)NSString * xid;
@end

/**广播*/
@interface TFBroadcast : NSObject
/**内容*/
@property(nonatomic,strong) NSString * msg;
@property(nonatomic,strong) NSString * uniqid;
@property(nonatomic,strong)NSString * __auto;
/**所在的组*/
@property(nonatomic,strong)NSString * gid;
/**时间戳 例:1618036620*/
@property(nonatomic,strong)NSString * time;
@end
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**网络速度*/
@interface TFNetworkSpeed : NSObject
@property(nonatomic,assign) TalkfunNetworkStatus  networkStatus;
//6.0KB/s
@property(nonatomic,strong) NSString * speed;

@end

@interface TFMemberParams : NSObject
@property(nonatomic,assign)NSInteger page;
@property(nonatomic,assign)NSInteger size;
@end

@interface TFMemberChat : NSObject
//开关
@property (nonatomic, assign)BOOL enable;
@property (nonatomic, assign)NSInteger grant;
@end

@interface TFMemberVoice : NSObject
//开关
@property (nonatomic, assign)BOOL enable;
@property (nonatomic, assign)NSInteger grant;
@end

@interface TFMemberAttr : NSObject
//部门编号
@property(nonatomic,assign) NSInteger departmentID;
//渠道id 默认:0
@property(nonatomic,assign) NSInteger ctagid;

@end
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///

@interface TFMemberActivityLuckyBag : NSObject
/**已经参与了福袋活动*/
@property (nonatomic,assign) BOOL participated;
@end

@interface TFMemberActivity : NSObject
/*福袋活动*/
@property (nonatomic,strong) TFMemberActivityLuckyBag*luckyBag;
@end
/**
*    成员信息
*/
@interface TFMember : NSObject
/*活动的配置读取*/
@property (nonatomic,strong) TFMemberActivity*activity;
@property (nonatomic,strong) TFMemberAttr*attr;
///【字段含义】成员名字
@property (nonatomic, copy, nonnull) NSString* nickname;
///【字段含义】成员头像
@property (nonatomic, copy, nonnull) NSString* avatar;
@property (nonatomic, copy, nonnull) NSString* gender;
@property (nonatomic, copy, nonnull) NSString* uid;
//内部人员
@property (nonatomic, assign)BOOL internal;
/**角色*/
@property (nonatomic, assign)TalkfunRtcRole role;
/**{
 聊天权限
"enable" : 1,
"grant" : 0
}
 */
@property (nonatomic,strong) TFMemberChat*chat;
/**{
 语音权限
"enable" : 1,
"grant" : 0
}
 */
@property (nonatomic, strong,nonnull) TFMemberVoice*voice;
@property (nonatomic, copy, nonnull) NSString* a;
@property (nonatomic, copy, nonnull) NSString* xid;
/**成员所在分组*/
@property (nonatomic, copy, nonnull) NSString* gid;
@property (nonatomic, copy, nonnull) NSString* term;
/**成员是不是机器人  默认:NO*/
@property (nonatomic, assign)BOOL robot;
//讲台状态
@property (nonatomic, assign) TalkfunApplyStatus status;
//涂鸦
@property (nonatomic, assign) BOOL drawPower;
@property(nonatomic,assign) BOOL isMe;
/**奖励*/
@property(nonatomic,assign)NSInteger score;
@end


/**聊天配置详情*/
@interface TFMod_text_liveConfigChat : NSObject
//聊天
@property(nonatomic,strong) NSString * name;
//设置聊天 开关
@property(nonatomic,assign) BOOL enable;
//聊天间隔
@property(nonatomic,assign) NSInteger  interval;
@end

/**问答配置详情*/
@interface TFMod_text_liveConfigQa : NSObject
//问答
@property(nonatomic,strong) NSString * name;
//设置问答 开关
@property(nonatomic,assign) BOOL enable;
//问答限制 0不通过 1通过 默认不通过
@property(nonatomic,strong) NSString * logic;
//聊天间隔
@property(nonatomic,assign) NSInteger  interval;
@end

@interface TFMod_text_liveConfig : NSObject
//聊天配置   用于隐藏发起聊天入口,聊天记录还在
@property(nonatomic,strong) TFMod_text_liveConfigChat * chat;
//问答配置   用于隐藏发起提问,提问记录还在
@property(nonatomic,strong) TFMod_text_liveConfigQa * qa;
@end


@interface TFMod_text_live : NSObject
@property(nonatomic,strong) TFMod_text_liveConfig * config;

@end




@interface TFMod_vote_Config_visible : NSObject
@property(nonatomic,strong) NSString * name;
//开关
@property(nonatomic,assign) BOOL enable;  //投票开关
@end

/**投票配置*/
@interface TFMod_vote_Config : NSObject

@property(nonatomic,strong) TFMod_vote_Config_visible * visible;
@end

/**投票模块*/
@interface TFMod_vote : NSObject

//开关
@property(nonatomic,assign) BOOL enable;

@property(nonatomic,strong) TFMod_vote_Config * config;
@end


@interface TFLiveScoreConfigValue : NSObject
//专业能力
@property(nonatomic,strong) NSString * name;
//种类
@property(nonatomic,assign) NSInteger sort;
//速度
@property(nonatomic,assign)NSInteger rate;
/* 选项 technologyScore effectScore*/
@property(nonatomic,strong) NSString *options;
@end

@interface TFLiveFlowerData : NSObject
@property(nonatomic,strong) NSString* time_interval;
@property(nonatomic,strong) NSString* uid;
@property(nonatomic,strong) NSString* bid;
@property(nonatomic,strong) NSString* roomid;
@property(nonatomic,strong) NSString* liveid;
//花朵总数
@property(nonatomic,assign) NSInteger amount;
@property(nonatomic,strong) NSString* sendtime;
@property(nonatomic,strong) NSString* left_amount;
@property(nonatomic,strong) NSString* gid;
/**头像*/
@property(nonatomic,strong) NSString* avatar;
@property(nonatomic,strong) NSString* pass_time;
@property(nonatomic,assign) NSString* left_time;
@property (nonatomic, assign)TalkfunRtcRole role;
@property(nonatomic,strong) NSString* pid;
@property(nonatomic,strong) NSString* nickname;
@property(nonatomic,strong) NSString* time;
/**用户唯一标识符*/
@property(nonatomic,strong) NSString* xid;
@property(nonatomic,assign) BOOL isMe;
/**课程id*/
@property(nonatomic,strong) NSString* course_id;
@end

/**评分*/
@interface TFLiveScoreConfig : NSObject
///【字段含义】投票时选项的内容列表
@property (nonatomic, strong,nonnull)NSMutableArray <TFLiveScoreConfigValue *>*  valueList;
@end

/**主讲人*/
@interface TFZhujiang : NSObject
//开关
@property(nonatomic,assign) BOOL enable;
//状态 //0是主播是主讲人,1是用户是主讲人
@property(nonatomic,assign)NSInteger status;

@property (nonatomic, copy, nonnull)NSString* xid;
@end






/**用户摄像头*/
@interface TFUserCamera : NSObject

/**自动连麦*/
@property(nonatomic,assign)BOOL autoUp;
/**邀请连麦 0无 1有*/
@property(nonatomic,assign)BOOL invite;
/**申请连麦 0无 1有*/
@property(nonatomic,assign)BOOL apply;
/**记录有没有开启连麦权限*/
@property(nonatomic,assign)NSInteger lastDrawPower;
/**申请列表的数据*/
@property(nonatomic,strong)NSMutableArray<TFMember*>* applyList;
/**邀请列表的数据*/
@property(nonatomic,strong)NSMutableArray<TFMember*>* inviteList2;

/**讲台列表用户的数据*/

@property(nonatomic,strong)NSMutableArray<TalkfunRtcModel*>* upUsers;

//0：非小班
//1：双人，
//2：1V6 模式，
//3：1V16模式
@property(nonatomic,assign)NSInteger smallType;
@end


/**直播信息章节*/
@interface Mod_liveInfo_ConfigChapter : NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;
/**名字*/
@property (nonatomic, copy, nonnull)NSString* name;
@end


/**直播信息的课程配置*/
@interface TFMod_liveInfo_Config : NSObject

@property (nonatomic, strong,nonnull)Mod_liveInfo_ConfigChapter* countdown;

//直播标题
@property (nonatomic, strong,nonnull)Mod_liveInfo_ConfigChapter* title;


@property (nonatomic, strong,nonnull)Mod_liveInfo_ConfigChapter* theme;

/**直播时间 */
@property (nonatomic, strong,nonnull)Mod_liveInfo_ConfigChapter* liveTime;

@end




/**直播信息的课程配置*/
@interface TFMod_liveInfo_Live : NSObject

/* 开关 */
@property (nonatomic, assign) BOOL enable;

/**直播信息的课程配置*/
@property(nonatomic,strong)TFMod_liveInfo_Config *config;

@end

/**直播互动奖杯配置*/
@interface TFMod_zhuboaction_Cup : NSObject

/* 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end

/**直播互动投票配置*/
@interface TFMod_zhuboaction_Vote : NSObject

/* 设置投票 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end

/**直播互动通知配置*/
@interface TFMod_zhuboaction_Notice:NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end

/**直播互动点名配置*/
@interface TFMod_zhuboaction_Rollcall:NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end

/**直播互动计时器配置*/
@interface TFMod_zhuboaction_Timer:NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end

/**直播互动公告配置*/
@interface TFMod_zhuboaction_Announcement:NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end

/**直播互动广播配置*/
@interface TFMod_zhuboaction_Broadcast:NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end

/**直播互动抢答器配置*/
@interface TFMod_zhuboaction_Responder:NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end

/**直播互动转盘配置*/
@interface TFMod_zhuboaction_Turntable:NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end

/**直播互动转盘配置*/
@interface TFMod_zhuboaction_Lottery:NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end

/**直播互动转盘配置*/
@interface TFMod_zhuboaction_examination :NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end

/**直播互动信息配置*/
@interface TFMod_zhuboaction_Config : NSObject
/**奖杯*/
@property(nonatomic,strong)TFMod_zhuboaction_Cup * cup; //
/**投票*/
@property(nonatomic,strong)TFMod_zhuboaction_Vote * vote; //
/**通知*/
@property(nonatomic,strong)TFMod_zhuboaction_Notice * notice; //
/**公告*/
@property(nonatomic,strong)TFMod_zhuboaction_Announcement * announcement; //
/**广播*/
@property(nonatomic,strong)TFMod_zhuboaction_Broadcast * broadcast;
/**点名*/
@property(nonatomic,strong)TFMod_zhuboaction_Rollcall * rollcall;
/**抢答器*/
@property(nonatomic,strong)TFMod_zhuboaction_Responder * responder;

/**定时器*/
@property(nonatomic,strong)TFMod_zhuboaction_Timer * timer;

/**转盘*/
@property(nonatomic,strong)TFMod_zhuboaction_Turntable * turntable;
/**抽奖*/
@property(nonatomic,strong)TFMod_zhuboaction_Lottery * lottery;

/**随堂考*/
@property(nonatomic,strong)TFMod_zhuboaction_examination * examination;

@end


/**直播互动信息配置*/
@interface TFMod_zhuboaction_live : NSObject

/* 开关 */
@property (nonatomic, assign) BOOL enable;

/**直播互动配置*/
@property(nonatomic,strong)TFMod_zhuboaction_Config *config;

@end

/**课前聊天配置*/
@interface TFMod_beforeclass_chat : NSObject

/* /课前聊天 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end


/**课前信息配置*/
@interface TFMod_beforeclass_Config : NSObject

@property(nonatomic,strong)TFMod_beforeclass_chat * chat;
@end

/**课前互动信息配置*/
@interface TFMod_beforeclass_live : NSObject

/* 开关 */
@property (nonatomic, assign) BOOL enable;

/**课前互动配置*/
@property(nonatomic,strong)TFMod_beforeclass_Config *config;

@end

@interface TFmod_report : NSObject
@property (nonatomic,strong) NSString * name;
/* 开关 */
@property (nonatomic, assign) BOOL enable;
@property (nonatomic,strong) NSMutableArray * config;
@end


/**课后聊天配置*/
@interface TFMod_afterclass_chat : NSObject

/* 课后聊天 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong) NSString * name;

@end


@interface TFmod_theftproof_config : NSObject

@property(nonatomic,strong)NSString * title;

@property(nonatomic,assign)NSInteger type;

@property(nonatomic,strong)NSString * value;

@end

/**防盗录*/
@interface TFmod_theftproof_live : NSObject

@property(nonatomic,strong)NSString * name;
/* 开关 */
@property (nonatomic, assign) BOOL enable;

@property (nonatomic,strong)TFmod_theftproof_config * config;
//防盗识别的内容
@property (nonatomic, copy, nonnull)NSString* msg;

@end

/**课后信息配置*/
@interface TFMod_afterclass_Config : NSObject

@property(nonatomic,strong)TFMod_afterclass_chat * chat;
@end

/**课后互动信息配置*/
@interface TFMod_afterclass_live : NSObject

/* 开关 */
@property (nonatomic, assign) BOOL enable;

/**课后互动配置*/
@property(nonatomic,strong)TFMod_afterclass_Config *config;

@end

///**学时防作弊配置**/
//@interface TFmod_prevent_cheat_config : NSObject
////签到的类型  0固定 1自定间距列表
//@property (nonatomic, assign) NSInteger type;
////定时每隔多少分钟签到
//@property (nonatomic, assign) NSInteger timeInterval;
////自定义间距签到的分的时间列表
//@property (nonatomic, strong) NSMutableArray <NSNumber*> *  customTimeInterval;
//@end
/**学时防作弊**/
@interface TFmod_prevent_cheat : NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;
//@property(nonatomic,strong)TFmod_prevent_cheat_config *config;
@end
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*      选项卡数据
*/
@interface TFtabsData: NSObject
///【字段含义】 标题
@property (nonatomic, copy, nonnull) NSString* title;
///【字段含义】 内容
@property (nonatomic, copy, nonnull) NSString* content;
///【字段含义】 名字
@property (nonatomic, copy, nonnull) NSString* name;
///【字段含义】 类型  chat聊天    invite榜单  editor自定义图文      courseware课件     link自定义链接
@property (nonatomic, copy, nonnull) NSString* type;
@end
@interface TFQuestion : NSObject
///【字段含义】是否启用
@property (nonatomic, assign)BOOL enable;
@end
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*     商 品
*/
@interface TFgoods: NSObject
//状态码
typedef enum{

    TalkfunPutawayOff = 0, //下架
    TalkfunPutawayOn  = 1, //上架
    TalkfunPutawayRecommendOn = 2, //推荐
    TalkfunPutawayRecommendOff = 3 //取消推荐
}TalkfunPutaway;

///【字段含义】 id
@property (nonatomic, copy, nonnull) NSString* goodsId;
///【字段含义】二维码链接
@property (nonatomic, copy, nonnull) NSString* qrcode;
///【字段含义】商 品链接
@property (nonatomic, copy, nonnull) NSString* url;
///【字段含义】商 品头像
@property (nonatomic, copy, nonnull) NSString* img;
///【字段含义】商 品下方的标题
@property (nonatomic, copy, nonnull) NSString* link_text;
///【字段含义】售 价 99
@property (nonatomic, copy, nonnull) NSString* now_Price;
///【字段含义】原 价  999
@property (nonatomic, copy, nonnull) NSString* originalPrice;
///【字段含义】标签
//  特 价 限 时  新 品 钜 惠 秒 杀
//    1    2     3    4    5
@property (nonatomic, copy, nonnull) NSString* tab;
///【字段含义】支 付方式
@property (nonatomic, copy, nonnull) NSString* pay;
///【字段含义】 名字
@property (nonatomic, copy, nonnull) NSString* name;
///【字段含义】
@property (nonatomic, copy, nonnull) NSString* loading1;
///【字段含义】
@property (nonatomic, copy, nonnull) NSString* loading2;
///【字段含义】1上架  0下架   2推荐  3 取消推荐        -1删除   4更新
@property (nonatomic, assign) TalkfunPutaway putaway;

@end
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*       商城开关
*/
@interface TFStore : NSObject
///【字段含义】是否启用
@property (nonatomic, assign)BOOL enable;
///【字段含义】 名字 ( 默认: " ")
@property (nonatomic, copy, nonnull)NSString * url;
///【字段含义】 名字 ( 默认: "二维码链接 ")
@property (nonatomic, copy, nonnull)NSString * qrcode;
///【字段含义】 名字 ( 默认: "商城入口 ")
@property (nonatomic, copy, nonnull)NSString * name;
///【字段含义】 名字 ( 默认: 类型   1商品列表  2商品链接  3商品二维码    ")
@property (nonatomic, assign)NSInteger type;

//商品列表 (监听onGoodsUpdate:() 回调更新列表)
@property (nonatomic, strong)NSMutableArray <TFgoods *>* _Nonnull goods;
@end
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///
/**
*       菜单入口
*/
@interface TFMenu : NSObject

///【字段含义】是否启用 选项卡
@property (nonatomic, assign)BOOL enable;

//选项卡数组
@property (nonatomic, strong)NSMutableArray <TFtabsData *>* _Nonnull tabsDataList;

///【字段含义】 名字
@property (nonatomic, copy, nonnull)NSString * name;

///【字段含义】提问
@property (nonatomic, strong)TFQuestion* _Nonnull question;
///【字段含义】内部 商城开关
@property (nonatomic, strong)TFStore* _Nonnull store;
///【字段含义】提_现
@property (nonatomic, assign)BOOL  withdraw;
///【字段含义】切换线路开关
@property (nonatomic, assign)BOOL  liveLine;
///【字段含义】个人中心开关
@property (nonatomic, assign)BOOL  info;
///【字段含义】红_包开关
@property (nonatomic, assign)BOOL  redPackRecord;
///【字段含义】举报开关
@property (nonatomic, assign)BOOL  report;
@end

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**课后互动信息配置*/
@interface TFpageConfig : NSObject
///【字段含义】宣传图列表
@property (nonatomic,strong) NSMutableArray <TFPopupPut *>* _Nonnull popUp;
///【字段含义】宣传图入口配置
@property (nonatomic, strong)TFPageConfigGlobal *_Nonnull global;
///【字段含义】标签菜单入口
@property (nonatomic, strong)TFMenu* _Nonnull menu;

@end
//--------------------------
@interface TFmod_chat_check_config : NSObject
@property (nonatomic, assign)NSInteger type;
@end

//聊天审核
@interface TFmod_chat_check : NSObject
///【字段含义】是否启用 选项卡
@property (nonatomic, assign)BOOL enable;
/** 聊天审核*/
@property (nonatomic, copy, nonnull)NSString* name;
///【字段含义】配置
@property (nonatomic, strong)TFmod_chat_check_config* _Nonnull config;
@end

//--------------------------
@interface TFMod_chat_group_config : NSObject
@property (nonatomic, assign)NSInteger type;
@property (nonatomic, strong)NSMutableArray <NSNumber *>* _Nonnull enableList;
@end

//开启消息隔离功能
@interface TFMod_chat_group : NSObject
///【字段含义】是否启用 选项卡
@property (nonatomic, assign)BOOL enable;
/** 消息隔离*/
@property (nonatomic, copy, nonnull)NSString* name;
///【字段含义】配置
@property (nonatomic, strong)TFMod_chat_group_config* _Nonnull config;
@end
//--------------------------
@interface TFLuckyBag_details_participantConditionObj_watchDuration_config : NSObject
@property (nonatomic, assign)NSInteger duration;
@end

@interface TFLuckyBag_details_participantConditionObj_watchDuration : NSObject
@property (nonatomic, assign)BOOL enable;
@property (nonatomic, strong)TFLuckyBag_details_participantConditionObj_watchDuration_config *config;
@end

@interface TFLuckyBag_details_participantConditionObj : NSObject
@property (nonatomic, strong)TFLuckyBag_details_participantConditionObj_watchDuration *watchDuration;
@end

@interface TFLuckyBag_details_receive : NSObject
/**选项类型
    0==文本
    4==地址
    2==手机号
 */
@property (nonatomic, assign)NSInteger type;
/**标题*/
@property (nonatomic, strong)NSString *title;
/**
 descriptionMsg 提示语
 description是系统字符 不能使用
 */
@property (nonatomic, strong)NSString *descriptionMsg;
/**是否必选项 NO 不是必选 YES必选*/
@property (nonatomic, assign)BOOL required;
@end

@interface TFLuckyBag_details_participantCondition_watchDuration_config : NSObject
@property (nonatomic, assign)NSInteger duration;
@end

@interface TFLuckyBag_details_participantCondition_watchDuration : NSObject
@property (nonatomic, assign)BOOL enable;
@property (nonatomic, strong)TFLuckyBag_details_participantCondition_watchDuration_config *config;
@end

@interface TFLuckyBag_details_participantCondition : NSObject
@property (nonatomic, strong)TFLuckyBag_details_participantCondition_watchDuration *watchDuration;
@end

@interface TFLuckyBag_details : NSObject
/**
 */
@property (nonatomic, assign)NSInteger status;
/**奖品数量*/
@property (nonatomic, assign)NSInteger prizeNum;
/** 参与者人数*/
@property (nonatomic, assign)NSInteger participantNum;
/**示例:"我已参与福袋，期待中大奖"*/
@property (nonatomic, strong)NSString *participateText;
/**示例:""请输入领奖说明"*/
@property (nonatomic, strong)NSString *receiveInfo;
@property (nonatomic, strong)TFLuckyBag_details_participantConditionObj *participantConditionObj;
/**发布福袋时的时间戳**/
@property (nonatomic, assign)NSInteger publishTimestamp;
/**接收信息源**/
@property (nonatomic, strong)NSMutableArray <TFLuckyBag_details_receive *>* _Nonnull receiveInfoOri;
/**获胜者人数**/
@property (nonatomic, assign)NSInteger winnerNum;
/**接收信息对象**/
@property (nonatomic, strong)NSMutableArray <TFLuckyBag_details_receive *>* _Nonnull receiveInfoObj;
/**获胜条件**/
@property (nonatomic, assign)NSInteger winnerCondition;
/**參加者數量 展示**/
@property (nonatomic, assign)bool participantNumShow;
/**參加者 条件**/
@property (nonatomic, strong)TFLuckyBag_details_participantCondition *participantCondition;
/**奖品名称*/
@property (nonatomic, strong)NSString *prize;
/**福袋ID*/
@property (nonatomic, assign)NSInteger ID;
/**领奖的温馨提示*/
@property (nonatomic, assign)NSString* tips;
/**奖品图片**/
@property (nonatomic, assign)NSString* prizeImage;
@property (nonatomic, assign)NSInteger openAfter;
/**福袋倒计时*/
@property (nonatomic, assign)NSInteger countdown;
/**创建的时间  "2024-11-11 14:22:53"*/
@property (nonatomic, assign)NSString* createTime;
@end

@interface TFLuckyBag : NSObject
/**当前福袋*/
@property (nonatomic, strong)TFLuckyBag_details *_Nullable current;
/**上一个福袋*/
@property (nonatomic, strong)TFLuckyBag_details *_Nullable last;
/** 中福袋了,等待领取*/
@property (nonatomic, strong)TFLuckyBag_details *_Nullable pendingReceive;

@end

@interface TFLiveRoom_activity : NSObject
//福袋
@property (nonatomic, strong)TFLuckyBag *luckyBag;
@end

//福袋中奖人员
@interface TFListLuckyBagWinner_data : NSObject
@property (nonatomic, assign)NSInteger bag_id;
@property (nonatomic, strong)NSString* uid;
/**奖品名称*/
@property (nonatomic,strong) NSString *prize;
/**用户ID*/
@property (nonatomic, assign)NSInteger ID;
@property (nonatomic,strong) NSString *nickname;
//示例:""请输入领奖说明"
@property (nonatomic, strong)NSString *receiveInfo;
/**角色*/
@property (nonatomic, assign)TalkfunRtcRole role;
@property (nonatomic, strong)NSString* a;
/**xid*/
@property (nonatomic, copy, nonnull)NSString* xid;
@property (nonatomic, copy, nonnull)NSString* avatar;

@end

@interface TFListLuckyBagWinner : NSObject
@property (nonatomic, strong)NSMutableArray <TFListLuckyBagWinner_data *>* _Nonnull data;
//福袋
@property (nonatomic, strong)TFLuckyBag_details *luckyBag;

@end


@interface TFLiveRoom : NSObject
/** 需要审核聊天的渠道id数组eg:[0,1,2] */
@property (nonatomic, strong)NSMutableArray <NSNumber *>* _Nonnull chat_check;
//活动
@property (nonatomic, strong)TFLiveRoom_activity *activity;
@end
//--------------------------
/**直播的课程配置*/
@interface TFLiveRoomInfo : NSObject
@property(nonatomic,assign)BOOL isLoadCourseware;//是否载入课件了
/*获取当前播放视频的模式*/
@property (nonatomic,assign) TalkfunLiveMode liveMode;
@property (nonatomic, assign)TalkfunLiveStatus  liveStatus;//直播间状态
/*是否显示访客人数*/
@property (nonatomic,assign)BOOL visitors;
/*YES:单体禁言 NO:单体解除禁言 */
@property (nonatomic,assign)BOOL isChatDisable;
/*YES:全体禁言 NO:全体解除禁言 */
@property (nonatomic,assign)BOOL isDisableAll;
/*摄像头开关获取 */
@property (nonatomic,assign)BOOL isCamera;
/*同时在线人数*/
@property (nonatomic,assign)NSInteger peakConcurrentUsers;
/*在线的客服列表*/
@property (nonatomic, strong,nonnull)NSMutableArray<TFMember *>* serviceList;

/* 课程数据*/
@property (nonatomic,strong)TFpageConfig * _Nonnull pageConfig;

@property(nonatomic,strong) TFMod_text_live * mod_text_live;
/* 课后互动信息 */
@property(nonatomic,strong) TFMod_afterclass_live * mod_afterclass_live;
/* 课前互动信息 */
@property(nonatomic,strong) TFMod_beforeclass_live * mod_beforeclass_live;

/**举报配置*/
@property(nonatomic,strong) TFmod_report * mod_report;

/* 直播互动信息 */
@property(nonatomic,strong) TFMod_zhuboaction_live * mod_zhuboaction_live;
/* 用户摄像头信息 */
@property(nonatomic,strong) TFUserCamera *usercamera;
/* 直播信息 */
@property(nonatomic,strong) TFMod_liveInfo_Live * mod_liveinfo_live;

/**防盗录  水印*/
@property(nonatomic,strong)TFmod_theftproof_live *mod_theftproof;

/* 获取当前用户个人数据 */
@property (nonatomic,strong)TFMember * myInfo;
/*评分系统是否开启*/
//@property(nonatomic,assign)BOOL evaluate;
/* 评分的数据 */
@property(nonatomic,strong)TFLiveScoreConfig *scoreConfig;
/**获取当前花朵总数*/
@property(nonatomic,assign) NSInteger flowerTotal;
/**课程是伪直播*/
@property(nonatomic,assign) BOOL isVodLive;
/* 获取主播个人数据 */
@property (nonatomic,strong)TFMember * zhuboInfo;
/* 获取课程标题 */
@property (nonatomic,strong)NSString * title;

/* 获取主讲人数据 */
@property (nonatomic,strong)TFZhujiang* zhujiang;
/*课程开始的时间戳 */
@property (nonatomic,assign)NSInteger startTime;
/*课程结束的时间戳 */
@property (nonatomic,assign)NSInteger end_time;
///【字段含义】暖场视频
@property (nonatomic, strong,nonnull)NSString*  videoUrl;
/*在线的机器人列表*/
@property (nonatomic, strong,nonnull)NSMutableArray<TFMember *>* robotList;
/**投票模块*/
@property(nonatomic,strong,nonnull) TFMod_vote * mod_vote;

///【字段含义】课件下载入口
@property (nonatomic, strong,nonnull)TFPageConfigGlobalSwitchDoucment * mod_document_download_live;
/*学时防作弊 */
@property(nonatomic,strong) TFmod_prevent_cheat *_Nonnull mod_prevent_cheat;
/*房间数据 */
@property(nonatomic,strong)TFLiveRoom *room;
/**消息隔离功能**/
@property(nonatomic,strong)TFMod_chat_group * _Nonnull mod_chat_group;
/**聊天审核*/
@property(nonatomic,strong)TFmod_chat_check * _Nonnull mod_chat_check;

@end

/**课程配置*/
@interface TFLiveModeChange : NSObject
/* 当前模式 */
@property(nonatomic,assign) TalkfunLiveMode currentMode;
/* 上一次的模式 */
@property (nonatomic,assign)TalkfunLiveMode beforeMode;
@end

/**点播水印*/
@interface TFMod_theftproof : NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;
/**xid*/
@property (nonatomic, copy, nonnull)NSString* xid;
//uid 用于显示水印名字
@property(nonatomic,strong)NSString * msg;
@end

/**点播聊天*/
@interface TFMod_playbackinfo_playbackConfigChat : NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;
/**名字*/
@property (nonatomic, copy, nonnull)NSString* name;
@end

/**点播章节*/
@interface TFMod_playbackinfo_playbackConfigChapter : NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;
/**名字*/
@property (nonatomic, copy, nonnull)NSString* name;
@end

/**点播提问*/
@interface TFMod_playbackinfo_playbackConfigQa : NSObject
/* 开关 */
@property (nonatomic, assign) BOOL enable;
/**名字*/
@property (nonatomic, copy, nonnull)NSString* name;
@property (nonatomic, copy, nonnull)NSString* logic;
@property (nonatomic, copy, nonnull)NSString* interval;
@end

/**点播的   聊天---章节---提问   */
@interface TFMod_playbackinfo_playbackConfig : NSObject
/* 聊天 */
@property (nonatomic, strong,nonnull)TFMod_playbackinfo_playbackConfigChat *chat;
/* 章节 */
@property (nonatomic, strong,nonnull)TFMod_playbackinfo_playbackConfigChapter *chapter;
/* 提问 */
@property (nonatomic, strong,nonnull)TFMod_playbackinfo_playbackConfigQa *qa;
@end

@interface TFMod_playbackinfo_playback : NSObject
/**回放信息*/
@property (nonatomic, copy, nonnull)NSString* name;
/* 开关 */
@property (nonatomic, assign) BOOL enable;
/**点播的聊天与提问的配置开关*/
@property(nonatomic,strong)TFMod_playbackinfo_playbackConfig *config;
@end


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*    主播的资料
*/
@interface TFZhubo : NSObject
///【字段含义】名字
@property (nonatomic, copy, nonnull) NSString* nickname;
///【字段含义】头像
@property (nonatomic, copy, nonnull) NSString* avatar;
@end

/**点播的课程配置*/
@interface TFPlaybackRoomInfo : NSObject
/* 水印 */
@property(nonatomic,strong)TFMod_theftproof *mod_theftproof;
/* 回放信息*/
@property(nonatomic,strong)TFMod_playbackinfo_playback *mod_playbackinfo_playback;

//课程总时长
@property (nonatomic,assign) CGFloat totalTime;
//课程id
@property (nonatomic, copy, nonnull)NSString *playbackID;
/*主播个人数据*/
@property (nonatomic,strong)TFZhubo * _Nonnull zhubo;
/*当前用户个人数据*/
@property (nonatomic,strong)TFMember * _Nonnull myInfo;
@end




NS_ASSUME_NONNULL_END


@interface TFPlaybackAlbum : NSObject
//1768563  id = playbackID
@property (nonatomic, copy, nonnull)NSString *playbackID;
//计算机一级-精讲6
@property (nonatomic, copy, nonnull)NSString *title;
//https://s2.talk-fun.com/4/live/563/59177/mtc7odu7mw/thumb-80x60.jpg
@property (nonatomic, copy, nonnull)NSString *img_small;
//gYyYjM5IjMxQDOElTOxQERBJTRzIkI6ICZpVnIsIiclNXdiojIlx2byJye
@property (nonatomic, copy, nonnull)NSString *access_token;
// 课程时长:秒数  161
@property (nonatomic, assign)NSInteger duration;
/**当前选中的专辑*/
@property(nonatomic,assign)BOOL select;
@end

//章节page
@interface TFPlaybackChapterPage : NSObject
/**时间  例:55  */
@property (nonatomic, assign)CGFloat starttime ;
/**图像*/
@property (nonatomic, copy, nonnull)NSString* thumbnail;
/**页面名字*/
@property (nonatomic, copy, nonnull)NSString* course;
/**当前页码*/
@property (nonatomic, assign)NSInteger page;
@end

//聊天
@interface TFPlaybackChatData : NSObject
@property (nonatomic, copy, nonnull) NSString* uid;
@property (nonatomic, copy, nonnull) NSString* a;
//1622119692
@property (nonatomic, copy, nonnull) NSString* timestamp;
//7276
@property (nonatomic, copy, nonnull) NSString* starttime;
/**时间  例:55  */
@property (nonatomic, copy, nonnull)  NSString* time;
@property (nonatomic, copy, nonnull)  NSString* gid;
/**头像链接*/
@property (nonatomic, copy, nonnull)  NSString* avatar;
@property (nonatomic, copy, nonnull)  NSString* cmd;
/**角色*/
@property (nonatomic, assign)TalkfunRtcRole role;
/**名字*/
@property (nonatomic, copy, nonnull) NSString* nickname;
/**内容*/
@property (nonatomic, copy, nonnull) NSString * msg;
@property (nonatomic, copy, nonnull) NSString* status;
@property (nonatomic, copy, nonnull) NSString* xid;
/**图片链接*/
@property (nonatomic, copy, nonnull) NSString *imageURL;
@end


/**主播回复的内容*/
@interface TFPlaybackQuestionAnswer : NSObject
//@property (nonatomic, copy, nonnull) NSString* status;
@property (nonatomic, copy, nonnull) NSString* sn;
@property (nonatomic, copy, nonnull) NSString* qid;
//**回复的编号*/
//@property (nonatomic, copy, nonnull) NSString* replyId;
@property (nonatomic, copy, nonnull) NSString* uid;
/*点播间是秒数:60*/
@property (nonatomic, copy, nonnull)NSString* startTime;
//@property (nonatomic, copy, nonnull)NSString* gid;
/**头像链接*/
@property (nonatomic, copy, nonnull)NSString* avatar;
/**角色*/
@property (nonatomic, assign)TalkfunRtcRole role;
/**名字*/
@property (nonatomic, copy, nonnull)NSString* nickname;
@property (nonatomic, copy, nonnull) NSString* xid;
/**内容*/
@property (nonatomic, copy, nonnull) NSString* content;
@end


////点播的提问
@interface TFPlaybackQuestionData : NSObject

@property (nonatomic, copy, nonnull) NSString* xid;
/*提问的编号*/
@property (nonatomic, copy, nonnull) NSString* qid;
@property (nonatomic, copy, nonnull) NSString* uid;

/**主播回复的内容*/
@property (nonatomic, strong,nonnull)NSMutableArray <TFPlaybackQuestionAnswer *>*  answer;
/**内容*/
@property (nonatomic, copy, nonnull) NSString* content;
/**
   点播间是秒数:60
 */
@property (nonatomic, copy, nonnull)NSString* startTime;
//@property (nonatomic, copy, nonnull)NSString* gid;
/**头像链接*/
@property (nonatomic, copy, nonnull)NSString* avatar;

/**角色*/
@property (nonatomic, assign)TalkfunRtcRole role;
/**名字*/
@property (nonatomic, copy, nonnull)NSString* nickname;
@property (nonatomic, copy, nonnull) NSString* sn;


@end



@interface TalkfunADConfig : NSObject
@property (assign, nonatomic) NSInteger duration;//广告总时长
@property (assign, nonatomic) BOOL isSkip;//是否可以跳过广告
@end

@interface TalkfunQuestionnaireAccess : NSObject
@property (strong, nonatomic) NSString* _Nonnull access_key;
@property (strong, nonatomic) NSString* _Nonnull access_token;
//作答URL
@property (strong, nonatomic) NSString* _Nonnull start_url;
//随堂答题详情URL
@property (strong, nonatomic) NSString* _Nonnull index_url;
//提交快捷答题卡URL
@property (strong, nonatomic) NSString* _Nonnull completion_url;

@end

@interface TalkfunQuestionnaire : NSObject
/**随堂测试id*/
@property (assign, nonatomic) NSInteger ID;
/**标题*/
@property (strong, nonatomic) NSString* _Nonnull title;
/**状态 -1.未参与,无需判断修改 0.未发布 1.已发布 2.已删除*/
@property (assign, nonatomic) TalkfunQuestionnaireStatus status;
/**结束时间 默认为0 or 1639379956*/
@property (assign, nonatomic) NSInteger endTime;
/**题目总数*/
@property (assign, nonatomic) NSInteger subjectTotal;
/**参与状态 - 1 未参加   0 已参加 ,但未提交、1已提交、2已批阅*/
@property (assign, nonatomic) TalkfunAnswerStatus answerStatus;
/**答对的数量*/
@property (assign, nonatomic) NSInteger score;
/**参与随堂测试信息*/
@property (strong, nonatomic) TalkfunQuestionnaireAccess* _Nonnull access;
/**考试是否结束   (提交交卷也是结束了考试  或者时间到了的结束考试)*/
@property (nonatomic, assign)BOOL isEndOfTestPaper;
//是否已经弹窗 (默认为NO ,课程结束后会为YES)
@property (nonatomic, assign)BOOL isPopup;
/**2:随堂考 3.问卷 4.快速答题卡*/
@property (nonatomic, assign)TFExaminationType type;
@end

@interface TalkfunQuestionnaireResult : NSObject
/**随堂测试列表*/
@property (nonatomic, strong,nonnull)NSArray <TalkfunQuestionnaire *>* data;
/**随堂测试总数*/
@property (assign, nonatomic) NSInteger total;
/**当前的服务器时间 :1639376805*/
@property (assign, nonatomic) NSInteger nowTime;
@property (assign, nonatomic) NSInteger cache;

/**倒计时列表:[1639376805]*/
@property (nonatomic, strong,nonnull)NSArray <NSNumber*>* latestTimeList;
@end

@interface TalkfunSubjectQuestionnaireInfo : NSObject
/**随堂测试id*/
@property (assign, nonatomic) NSInteger ID;
@property (nonatomic, copy, nonnull)NSString* subjectConfig;
@property (nonatomic, copy, nonnull)NSString* xid;
/**考试时长，单位：分钟*/
@property (nonatomic, assign)NSInteger timeLimit;
//84461
@property (nonatomic, copy, nonnull)NSString* bid;
//0
@property (nonatomic, copy, nonnull)NSString* liveid;
/**2:随堂考 3.问卷 4.快速答题卡*/
@property (nonatomic, assign)TFExaminationType type;
@property (nonatomic, copy, nonnull)NSString* title;
@property (nonatomic, assign)NSInteger answerSwitch;
//image url
@property (nonatomic, copy, nonnull)NSString* image;
/**考试结束时间 --可以提前结束考试*/
@property (nonatomic, assign)NSInteger endTime;
/**考试是否结束 (提交交卷也是结束了考试  或者时间到了的结束考试)*/
@property (nonatomic, assign)BOOL isEndOfTestPaper;
/**题目展示类型 TalkfunPagination1.分页式  TalkfunLiveOnePage2.一页式*/
@property (nonatomic, assign)TalkfunQuestionnairePageStatus pageType;
/**创建的时间*/
@property (nonatomic, assign)NSInteger addTime;
@property (nonatomic, copy, nonnull)NSString* pid;
//2740341
@property (nonatomic, copy, nonnull)NSString* course_id;
/**状态：0未上架、1已上架、2已下架、3已删除*/
@property (nonatomic, assign)TalkfunSubjectQuestionnaireInfoStatus  status;
//0
@property (nonatomic, assign)NSInteger updateTime;
@end

/**主题答案*/
@interface TalkfunSubjectAnswer : NSObject

/**内容*/
@property (nonatomic, strong,nonnull)NSString* answer;
/**题目状态：1正常状态，2删除状态*/
@property(nonatomic,assign)NSInteger status;
/**回复的ID*/
@property (assign, nonatomic) NSInteger ID;
/**答案是否正确:0 */
@property (assign, nonatomic) BOOL isCorrect;
@property (assign, nonatomic) NSInteger updateTime;
//579687
@property (assign, nonatomic) NSInteger subjectAnswerTikuId;
/**题目id*/
@property (assign, nonatomic) NSInteger subjectId;
/**创建的时间*/
@property (assign, nonatomic) NSInteger addTime;
/**用户选中的 */
@property(nonatomic,assign)BOOL isSelected;
/**填空题输入的内容 */
@property (nonatomic, strong,nonnull)NSString*  fillInTheBlank;

@end

//学科考试答案详细信息
@interface TalkfunSubjectExamineAnswerDetailInfo : NSObject
/**
 答案
 "answer" : [
     "777231",
     "777233"
 ],
 */
@property (nonatomic, copy, nonnull)NSMutableArray * answer;
//得分
@property (assign, nonatomic) CGFloat score;
@property (assign, nonatomic) NSInteger ID;
@property (assign, nonatomic) NSInteger updateTime;
@property (assign, nonatomic) NSInteger eaId;
@property (assign, nonatomic) NSInteger subjectId;
@property (assign, nonatomic) NSInteger addTime;
@property (strong, nonatomic,nonnull) NSString*  comment;
@end

//主题信息
@interface TalkfunSubjectInfo : NSObject
@property (assign, nonatomic) NSInteger status;
@property (assign, nonatomic) NSInteger ID;
@property (assign, nonatomic) NSInteger updateTime;
//解析
@property (strong, nonatomic,nonnull) NSString*  analysis;
//主题:sdfasfsa
@property (strong, nonatomic,nonnull) NSString*  subject;
@property (assign, nonatomic) NSInteger subjectTikuId;
@property (assign, nonatomic) NSInteger addTime;
@property (nonatomic, copy, nonnull)NSString* bid;
/**1单选题、2多选题、3判断题、4填空题、5简答题*/
@property (assign, nonatomic) TalkfunTopicType type;
/**是否必选项 NO 不是必选 YES必选*/
@property (assign, nonatomic) BOOL isRequired;
@property(nonatomic,strong,nonnull) NSString*  pid;
@end


@interface TalkfunSubjectCategoryInfo : NSObject
@property (assign, nonatomic) NSInteger ID;
@property(nonatomic,strong,nonnull) NSString* title;
@end

@interface TalkfunSubjectExamineDetail : NSObject
@property (assign, nonatomic) NSInteger ID;
@property (assign, nonatomic) NSInteger examineId;
@property (assign, nonatomic) NSInteger updateTime;

//选项: A  B C D
@property (nonatomic, strong,nonnull) NSMutableArray <TalkfunSubjectAnswer*>*  subjectAnswerList;

/**用户已选择的答案*/
@property (nonatomic, strong,nonnull)TalkfunSubjectExamineAnswerDetailInfo * subjectExamineAnswerDetailInfo;
//主题id: 208289
@property (assign, nonatomic) NSInteger subjectId;
/*主题信息*/
@property (nonatomic, strong,nonnull)TalkfunSubjectInfo * subjectInfo;
@property (nonatomic, strong,nonnull)TalkfunSubjectCategoryInfo * subjectCategoryInfo;
//1639447756
@property (nonatomic, assign)NSInteger addTime;
@property (nonatomic, assign)CGFloat score;
@property (nonatomic, assign)NSInteger addTimesort;
@property (nonatomic, assign)NSInteger sort;
@property (nonatomic, assign)NSInteger status;

//题目默认44占位 请求html成功后,可改为真实高度
@property (nonatomic, assign)CGFloat titleWebViewHeight;

//题目默认44占位 请求html成功后,可改为真实高度  
@property (nonatomic, assign)CGFloat analysisWebViewHeight;

//题目默认0 保存内容高度
@property (nonatomic, assign)CGFloat cellHeight;
@end

@interface TalkfunSubjectExamineAnswerInfo : NSObject
/**参与状态 - 1 未参加   0 已参加 ,但未提交、1已提交、2已批阅*/
@property (nonatomic, assign)TalkfunAnswerStatus answerStatus;
//答对的数量 
@property (nonatomic, assign)NSInteger score;
@property (nonatomic, assign)NSInteger tfuid;
@property (nonatomic, assign)NSInteger ID;
@property (nonatomic, assign)NSInteger updateTime;
@property (nonatomic, assign)NSInteger countdownTime;
@property (nonatomic, assign)NSInteger examineId;
@property (nonatomic, assign)NSInteger addTime;
@property (nonatomic, assign)NSInteger pid;
@end
//考试详情
@interface TFExaminationDetail : NSObject
/**检查答案完成网址*/
@property (nonatomic, strong,nonnull)NSString *  subject_examine_answer_finish_url;
/**考试的基本配置*/
@property (nonatomic, strong,nonnull)TalkfunSubjectQuestionnaireInfo *  subjectExamineInfo;
/**考试详细信息总计*/
@property (nonatomic, assign)NSInteger subjectExamineDetailTotal;
/**考试选项列表*/
@property (nonatomic, strong,nonnull)NSArray <TalkfunSubjectExamineDetail*>* subjectDetailList;
/**考试答案信息*/
@property (nonatomic, strong,nonnull)TalkfunSubjectExamineAnswerInfo * subjectExamineAnswerInfo;
/**主题检查答案详细网址*/
@property (nonatomic, strong,nonnull)NSString * subject_examine_answer_detail_url;

//参与随堂测试信息
@property (strong, nonatomic,nonnull) TalkfunQuestionnaireAccess*  access;
@end

//发布随堂测试时
@interface TFQuestionnairePushResult : NSObject
@property (assign, nonatomic) NSInteger ID;
/**名字*/
@property (nonatomic, strong,nonnull)NSString * nickname;
/**标题*/
@property (nonatomic, strong,nonnull)NSString *  title;
/**主题总数*/
@property (assign, nonatomic) NSInteger  subjectTotal;
/**试卷的结束时间*/
@property (assign, nonatomic) NSInteger endTime;
/**添加试卷的试卷*/
@property (assign, nonatomic) NSInteger addTime;
/**是不是主播*/
@property (assign, nonatomic) BOOL isZhubo;
/**2:随堂考 3.问卷 4.快速答题卡*/
@property (assign,nonatomic) TFExaminationType type;
@end

//结束作答随堂测试
@interface TFQuestionnaireEndResult : NSObject
//试卷主题的id
@property (assign, nonatomic) NSInteger ID;
/**2:随堂考 3.问卷 4.快速答题卡*/
@property (assign, nonatomic) TFExaminationType type;
@end

//删除发布状态的随堂测试
@interface TFQuestionnaireDeleteResult : NSObject
@property (assign, nonatomic) NSInteger ID;
@end

@interface TFFillExaminationAnswersParam : NSObject
//选项的唯一标识符
@property (assign, nonatomic) NSInteger subjectId;
//选项的内容
@property (nonatomic, strong,nonnull) NSMutableArray <NSString*>* answerList;
@property (nonatomic, strong,nonnull) NSString * access_key;


/**2:随堂考 3.问卷 4.快速答题卡*/
@property (assign, nonatomic) TFExaminationType type;
@end

@interface TFExaminationSubmitParam : NSObject
@property (nonatomic, strong,nonnull) NSString * access_key;
@end

//考试详情的参数
@interface TTFExaminationDetailParam : NSObject
@property (nonatomic, assign) NSInteger ID;
/**2:随堂考 3.问卷 4.快速答题卡*/
@property (assign, nonatomic) TFExaminationType type;
@end

@interface TFdoc : NSObject
//课件类型 ,png.ppt,doc
@property (nonatomic, copy,nonnull)NSString *  ext;
//课件下载url
@property (nonatomic, copy,nonnull)NSString *  downURL;
//预览url
@property (nonatomic, copy,nonnull)NSString *  url;
//封面
@property (nonatomic, copy,nonnull)NSString *  thumbnail;
//文件总大小 11MB
@property (nonatomic, copy,nonnull)NSString *  size;
// 页数
@property (nonatomic, copy,nonnull)NSString *  pages;
@property (nonatomic, copy,nonnull)NSString *  name;
@property (nonatomic, copy,nonnull)NSString *  course_id;
@property (nonatomic, copy,nonnull)NSString *  roomid;
//本地路径
@property (nonatomic, copy,nonnull)NSString *localPath;
//课件下载状态  下载成功  下载失败  下载中  暂停  等待中
@property (nonatomic, assign)TFCourseDownloadStatus status;

@property (nonatomic,assign) NSInteger ID;
//已下载的大小
@property (nonatomic, assign)CGFloat  tmpSize;
//课件大小
@property (nonatomic, assign)CGFloat  sizeBytes;
@end


//下载列表参数
@interface TFdocParam : NSObject
//页码
@property (nonatomic,assign) NSInteger page;
/**【字段含义】访问令牌 [必填]
 */
@property (nonatomic, copy, nonnull)NSString* accessToken;
@end

@interface TFInvitationCard_course : NSObject
@property (nonatomic, copy,nonnull)NSString * course_id;
@property (nonatomic, copy,nonnull)NSString * course_name;
@property(nonatomic,copy,nonnull)NSString * start_time;
@property(nonatomic,copy,nonnull)NSString * end_time;
@end


@interface TFInvitationCard_zhubo : NSObject
@property(nonatomic,strong) NSString* _Nonnull bid;
@property(nonatomic,strong) NSString* _Nonnull partner_id;
@property(nonatomic,strong) NSString* _Nonnull thirdAccount;
@property(nonatomic,strong) NSString* _Nonnull nickname;
@property(nonatomic,strong) NSString* _Nonnull intro;
@property(nonatomic,strong) NSString* _Nonnull p_150;
@property(nonatomic,strong) NSString* _Nonnull p_40;
//肖像更新
@property(nonatomic,assign) NSInteger portraitUpdate;
//部门编号
@property(nonatomic,assign) NSInteger departmentID;
//权限
@property(nonatomic,assign) NSInteger power;

@end

@interface TFInvitationCard : NSObject

/**用户头像
 */
@property(nonatomic,strong)NSString*_Nonnull avatar;
/**用户名字
 */
@property (nonatomic, strong)NSString*_Nonnull nickname;
/**二维码
 */
@property (nonatomic, strong)NSString*_Nonnull qrcodeUrl;
/**标题
 */
@property (nonatomic, strong)NSString*_Nonnull title;
/**  描述
   "好看的视频，都在这里，赶紧加入我们吧"
 */
@property (nonatomic, strong)NSString*_Nonnull descriptionMsg;
/**  主播
 */
@property (nonatomic, strong )TFInvitationCard_zhubo*_Nonnull zhubo;
/**  课程
 */
@property (nonatomic, strong )TFInvitationCard_course*_Nonnull course;

@end
//----------------------------------------------------------
@interface TFLuckyBagPublishData : NSObject
/**福袋唯一标识符*/
@property (nonatomic,assign) NSInteger ID;
//14:17
@property (nonatomic,strong) NSString *_Nonnull publishTime;
/**福袋倒计时长*/
@property (nonatomic,assign) NSInteger countdown;
//出版商
@property (nonatomic,strong) NSString*_Nonnull publisher;
@end

//福袋推送
@interface TFLuckyBagPublish : NSObject

@property (nonatomic,assign) NSInteger xid;
@property (nonatomic,strong) TFLuckyBagPublishData* _Nonnull data;
//5
@property (nonatomic,assign) NSInteger term;
@end

@interface TFLuckyBagCanceData : NSObject
/**福袋唯一标识符*/
//449
@property (nonatomic,assign) NSInteger ID;
@end
//福袋取消
@interface TFLuckyBagCance : NSObject
@property (nonatomic,assign) NSInteger xid;
@property (nonatomic,strong) TFLuckyBagCanceData* _Nonnull data;
@property (nonatomic,assign) NSInteger term;
@end
//福袋中奖用户
@interface TFLuckyBagWinningDataWinners : NSObject
/**角色*/
@property(nonatomic,assign)TalkfunRtcRole role;
@property (nonatomic, strong)NSString*_Nonnull nickname;
//用户唯一xid
@property (nonatomic,assign) NSInteger xid;
@property (nonatomic,assign) NSInteger a;
@end

@interface TFLuckyBagWinningData : NSObject
//449
@property (nonatomic,assign) NSInteger ID;
//获胜者人数
@property (nonatomic,assign) NSInteger winnerNum;
/**奖品名称*/
@property (nonatomic,strong) NSString *_Nonnull prize;
/**中奖用户列表*/
@property (nonatomic, strong)NSMutableArray <TFLuckyBagWinningDataWinners *>* _Nonnull winners;

@end

@interface TFLuckyBagWinning : NSObject
/**福袋唯一标识符*/
@property (nonatomic,assign) NSInteger xid;
@property (nonatomic,strong) TFLuckyBagWinningData* _Nonnull data;
@property (nonatomic,assign) NSInteger term;
@end
//----------------------------------------------------------
@interface TFSignLoopPreventCheat : NSObject
//1703043221
@property (nonatomic,assign) NSInteger signTime;
//60  倒计时总时长
@property (nonatomic,assign) NSInteger validTime ;
@end



